115 CR$=CHR$(13):LF$=CHR$(10):ABT$=CHR$(11):VA$="CPC12.3B (compilable)":CA$="RBBS-PC.DEF":DIM SA(8),MD(20),UA(12),FS(8),ME$(6),HE$(8),M(250,2),A$(30),B$(128):IF CE THEN GOSUB 59000 ELSE NODE = 2:NODE$ = "1"
117 OPEN "I",2,CA$:INPUT #2,FA$,PB$,PC$,NA$,NB$,CB,AA,AB,TV!,ME,DF,UB$,XPR,BC,BA,PRT,DF,ME$(1),ME$(2),ME$(3),ME$(4),ME$(5),CQ$,DF,OA,UE,PL,DF,WA,DF$:INPUT#2,MES1$,LG$(11),CF$,CG$,UF1$,WB$,LG$(12),DIR$,CP$,OB,SD,DF$,DA,FGR,BG,BDR,RC$,CH$,LG$(13),LG$(14)
121 INPUT#2,FS(1),FS(2),FS(3),FS(4),FS(5),FS(6),FS(7),FS(8),UA(1),UA(2),UA(3),UA(4),UA(5),UA(6),UA(7),UA(8),UA(9),UA(10),UA(11),UA(12),CPQ:MES$=MES1$:UF$=UF1$:IF CE THEN MID$(VA$,10)="--(compiled)":ELSE SHRD=0
123 PRINT VB$;VA$;" Node ";NODE$:PRINT"Free memory: ";FRE("A"):PRINT:PRINT"Press:":FOR I=1 TO 11:INPUT#2,A$:PRINT A$:NEXT:A$="":FOR I=1 TO 10:KEY I,"":NEXT
124 IF NOT CPQ THEN DEF SEG=0:MC=PEEK(&H1FE)+256*PEEK(&H1FF):IF MC>0 THEN DEF SEG=MC:DF=(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC):IF PEEK(DF)=&H1 OR &H2 THEN POKE(DF),&H9
125 IF MC THEN AX=&HB00:BX=0:GOSUB 60510:AX=&H701:BX=0:GOSUB 60510:BX=-4:AX=&H1:IF CP$="COM2" THEN BX=-3:GOSUB 60510 ELSE GOSUB 60510
126 IF SHRD=2 THEN CRET$=SPACE$(535):CALL INITIO(A)
180 GET 2,CDX:IF LEFT$(CL$,13) = STRING$(13,CHR$(0)) THEN CDX=CDX-1:GOTO 180
187 IF LH THEN GOSUB 41500:LPRINT:LPRINT VB$;VA$;" Node ";NODE$;" up at "TIM$+" on "+DATE$:GOSUB 50500
200 OPEN CP$+":300,N,8,1,RS,CD,DS" AS #3:IF INP(MSR) > 127 THEN GOSUB 44000:GOTO 440
201 A$="ATZ":GOSUB 52070:GOSUB 50510:IF SD THEN MB$="M1" ELSE MB$="M0
220 IF CB >0 THEN A$="ATS2=255Q1S0=255S10=20"+MB$ ELSE A$="ATS2=255Q1S10=20"+MB$
221 GOSUB 52070:GOSUB 41500:PRINT:PRINT"RBBS-PC ready for calls at "TIM$+" on "+DATE$:PRINT:PRINT"<< Screen clears to prevent display burn-in. >>":PRINT:IF NOT PRT THEN LOCATE,,0
235 TCA!=FNTI!:GOSUB 49000
239 RB!=0:IF CB>0 THEN RB!=FNTI!:COLOR 7,0,0 ELSE COLOR FGR,BG,BDR
240 IF SG THEN 253 ELSE X=1:WHILE(INP(MSR)AND &H40)=0:X$=INKEY$:FK$=X$:GOSUB 60000
250 IF X$=CHR$(27) THEN 253 ELSE 256
253 TI!=FNTI!:GOSUB 14500:LJ=-1:IF KA$<>"NONE" THEN LOCATE 24,1:INPUT "Enter PASSWORD";Z$:GOSUB 5000:IF Z$ <> KA$ THEN 13549
445 IF INSTR(NAM$,"SYSOP") OR INSTR(NAM$,NA$+" "+NB$) THEN I=1:GOTO 10620
455 FOR J=1 TO LEN(NAM$):X=ASC(MID$(NAM$,J,1)):IF(X<65 OR X>90)AND(X<>32 AND X<>39 AND X<>45 AND X<>46)THEN 400
465 NEXT:TEA$=NAM$:GOSUB 12600:IF NOT FG THEN 700 ELSE GOSUB 27000:GOSUB 25000:GOSUB 9500:UIX#=LOC(2):IF UG<MO THEN I=3:GOTO 10620 ELSE GOSUB 26500:CI$=CS$:I=0:MR=4:KEE$=PW$:MES=0:IF Q=3 THEN Z$=B$(3):TDA=1:GOSUB 677 ELSE GOSUB 675
630 IF PF THEN I=4:GOTO 10620
643 IF UG>=SE THEN GOSUB 1405:A$="You have SYSOP privileges":GOSUB 1400 ELSE GOSUB 41070
645 NF=0:LM$=FNDC$(FNUD$(LND$)):IF MID$(LM$,3,1)=" " THEN MID$(LM$,3,1)="0
655 IF MID$(LM$,5,1)=" " THEN MID$(LM$,5,1)="0
660 GOTO 800
665 IF KEE$=PW$ THEN PF=0:RETURN
667 TDA=0
670 TDA=TDA+1:IF TDA>MR THEN PF=-1:RETURN
675 A$=P$+" (dots will echo)":GOSUB 45010:Z$=B$(1)
677 GOSUB 5000:Z$=Z$+SPACE$(15-LEN(Z$)):IF KEE$=Z$ THEN PF=0:RETURN
680 IF MES THEN A$="Sorry, wrong password":GOSUB 1405:GOTO 670 ELSE 670
700 Z$=FE$:GOSUB 12570:IF FG THEN GOSUB 27000:GOSUB 25000:GOTO 12595 ELSE Z$=LK$:GOSUB 12570:IF FG THEN GOSUB 27000:GOSUB 25000:GOTO 12595
710 IF NUR>HUR THEN A$="Sorry no room for new users at this time!":GOSUB 1405:A$="Please try again in the future.":GOSUB 1405:UIX#=0:GOTO 13540
720 GOSUB 25000:NF=-1:GOSUB 9400:GOSUB 12630:LSET N$="NEWUSER":PUT 2,UIX#:UG=DB:IF UG < MO THEN I=3:GOTO 10620
730 A1$=" are you calling from":GOSUB 12950:A$=NAM$+" from "+Z$:GOSUB 1405:LSET CS$=Z$:CI$=Z$+SPACE$(2):A$="Is this correct":GOSUB 1500:GOSUB 1405:IF NOT YES THEN LSET N$=STRING$(31,0):PUT 2,UIX#:GOSUB 27500:GOTO 400
755 GOSUB 12800:A$="Type PASSWORD again for double check":GOSUB 45010:SWAP Z$,B$(1):GOSUB 5000:IF B$(1)<>Z$THEN A$=P$+"s don't match!":GOSUB 1405:GOTO 755
760 GOSUB 5000:LSET PW$=Z$:GOSUB 1405:A$=FE$+", your password is needed to logon again.":GOSUB 1400:TFA=UG:GOSUB 12900
800 MUIX#=UIX#:HUG=UG:GOSUB 1405:A$="Logging "+NAM$+" to disk.":GOSUB 1405:TGA=CVI(MID$(OP$,1,2))+1:GOSUB 9500:IF D$<>LEFT$(TD$,8) THEN ET=0 ELSE ET=CVI(ET$)
805 DLD=CVI(UDL$):ULD=CVI(UUL$):IF LO>LE THEN LO=0
815 LSET OP$=MKI$(TGA)+MID$(OP$,3):LSET TD$=D$+" "+TI$:PUT 2,UIX#:GOSUB 27500:IF NOT NF THEN A$="You have signed on"+STR$(TGA)+" times.":GOSUB 1400
816 IF NF THEN TV!=TV!*60:F$=LG$(12):STI=0:GOSUB 1790:STI=-1:GOSUB 1700:TV!=TV!/60
817 NF=0:IF UE THEN A$="You have downloaded"+STR$(DLD)+" files & uploaded"+STR$(ULD)+" files":GOSUB 1400
827 FE$=NA$:LK$=NB$:NAM$="SYSOP":UG=SE:SH=-1:PRT=-1:MQ=72:GOSUB 41500:IF LJ THEN SG=0:GOSUB 33100
830 IF UG<>DB THEN Z$="":Z=0:GOSUB 5140:IF FG THEN TV!=TJA
835 IF LJ THEN 842:IF BE THEN PE$="N,8,1" ELSE PE$="E,7,1
837 Z$=NAM$+" on at "+D$+", "+TIM$+" from "+CI$+", "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$))
841 IF LH THEN LPRINT SPACE$(2)+Z$
842 TV!=(TV!+DAY*ET)*60:GOSUB 21990:GOSUB 23000:IF NOT SH THEN CJ=CJ+1
844 GOSUB 24000:GET 1,NODE:MID$(R$,1,31)=NAM$+SPACE$(31-LEN(NAM$)):MID$(R$,57,1)="A":PUT 1,NODE:GOSUB 25000:GOSUB 30000:IF SH THEN 900 ELSE IF UG>=SE THEN SH=-1
848 IF LL THEN 948
850 GOSUB 950:IF BC<1 THEN A$="Sorry, "+FE$+" no bulletins today":GOSUB 1405:GOTO 900
855 IF OB THEN A$=FE$+", there are "+STR$(BC)+" bulletins today. Skip them":GOSUB 1500:IF YES THEN 900
860 GOSUB 9705
900 A$="":GOSUB 1405:A$="Checking message file.":IF NOT LJ THEN GOSUB 1400
910 T=0:GOSUB 30500:FOR R=1 TO LC:GET 1,M(R,1):IF INSTR(MID$(R$,37,31),NAM$)=0 THEN IF NOT SH THEN 929
922 IF NOT SH THEN IF T THEN 927 ELSE 925
923 IF INSTR(MID$(R$,37,31),NAM$)=0 AND INSTR(MID$(R$,37,31),NA$+" "+NB$)=0 THEN 929 ELSE IF T THEN 927
925 A$="The following message(s) may be for you.":GOSUB 1405:A$=K1$:GOSUB 1400:T=-1
927 A$=LEFT$(R$,5):GOSUB 1403
929 NEXT:IF NOT T THEN A$="Sorry, "+FE$+", no mail for you today.":GOSUB 1405
930 IF NOT RD THEN A$="":GOTO 948
931 T=0:FOR R=1 TO LC:GET 1,M(R,1):IF INSTR(MID$(R$,6,31),NAM$)=0 THEN IF NOT SH THEN 940
932 IF NOT SH THEN IF T THEN 938 ELSE 935
934 IF INSTR(MID$(R$,6,31),NAM$)=0 AND INSTR(MID$(R$,6,31),NA$+" "+NB$)=0 THEN 940 ELSE IF T THEN 938
935 GOSUB 1405:A$="You have left these message(s).":GOSUB 1405:A$=K1$:GOSUB 1400:T=-1
938 A$=LEFT$(R$,5):GOSUB 1403
940 NEXT:IF T THEN GOSUB 1405:A$="Thanks, "+FE$+", for deleting any messages.":GOSUB 1405
1500 GOSUB 42000:TOA!=FRE("A"):THA!=FNTI!:A=0:B=0:C=0:Q=1:EOL=0:YES=0:B$="":NO=0:A$=A$+"? ":GOSUB 1403:IF LJ THEN LINE INPUT"",B$:GOTO 1575 ELSE IF BA THEN PRINT#3,CHR$(7);
1525 WHILE EOF(3):GOSUB 42000:MMM!=FNTI!-THA!:IF MMM!>TY!THEN 10595
1530 Y$=INKEY$:FK$=Y$:GOSUB 60000:IF Y$<>"" THEN 1545 ELSE WEND:GOSUB 42010
1540 Y$=INPUT$(1,3):IF Y$=CHR$(127)THEN 1635
1545 IF Y$=CHR$(8) OR Y$=CHR$(7) OR Y$=CHR$(26) OR Y$=CHR$(227) THEN 1635
1550 IF Y$<" " AND Y$<>CR$THEN 1525
1553 IF Y$="^" THEN 1525
1555 IF PRT THEN PRINT Y$;
1557 IF NOT SI THEN PRINT#3,Y$; ELSE PRINT#3,".";
1560 IF Y$=CR$THEN 1570
1563 IF LEN(B$)=>254 THEN A$="Input too long!":GOSUB 1405:GOTO 1500
1565 B$=B$+Y$:GOTO 1525
1570 IF LF THEN PRINT#3,LF$;
1575 A=INSTR(B$,";"):IF A=0 THEN 1620
1580 B$(1)=LEFT$(B$,A-1):A=A+1
1585 B=INSTR(A,B$,";"):C=B-A:IF C<1 THEN EOL=-1:C=128
1595 DF$=MID$(B$,A,C):IF DF$<>"" THEN Q=Q+1:B$(Q)=DF$
1605 IF NOT EOL AND Q<10 THEN A=B+1:GOTO 1585
1610 IF LEN(B$)>64 THEN A$="Try again, "+FE$+".":GOSUB 1405:GOTO 1500 ELSE 1625
1620 B$(1)=B$:Q=1:IF B$="" THEN Q=0:RETURN
1625 SWAP Z$,B$:GOSUB 5000:SWAP Z$,B$:IF LEFT$(B$,1)="Y" THEN YES=-1 ELSE IF LEFT$(B$,1)="N" THEN NO=-1
1628 IF B$(Q)="NS" OR B$(Q)="ns" THEN NO=0:NH=-1:B$(Q)="":IF Q>1 THEN Q=Q-1
1629 IF B$="RE" THEN RE=-1 ELSE IF B$="K" THEN KB=-1
1630 RETURN
1635 IF LEN(B$)=0 THEN 1525
1640 B$=LEFT$(B$,LEN(B$)-1):IF PRT THEN PRINT BK1$;
1650 PRINT#3,BK$;:GOTO 1525
1654 R1=INP(LCR):DF=INP(MSB):OUT MSB,0:OUT LCR,R1 OR 128:IF Q=384 THEN OUT LSB,&H80:OUT MSB,&H1:GOTO 1684
1662 IF Q=256 THEN OUT LSB,&H0:OUT MSB,&H1:GOTO 1684
1664 IF Q=96 THEN OUT LSB,&H60:OUT MSB,&H0
1684 OUT LCR,R1:OUT MSB,DF:RETURN
1700 F$=HE$(2):GOTO 1790
1740 F$=HE$(1):GOTO 1790
1760 F$=WB$:GOTO 1790
1780 F$=HE$(8)
1790 GOSUB 43030:GOSUB 6000:RETURN
1800 GOSUB 1405:A$="Comments are readable by Sysop only, Do you wish to leave a comment":GOSUB 1500:MQ=72:IF NOT YES THEN GOTO 2210
1840 T$="SYSOP":SUB$="COMMENT":SC=-1:GOTO 2007
1850 CLOSE 2:BX=&H3:EN$=CG$:GOSUB 29000:OPEN "A",2,CG$:GOSUB 1405:A$="Thanks for the comments, "+FE$+" !":GOSUB 1405:GOSUB 41510:PRINT#2,NAM$,D$,TIM$:FOR X=1 TO LI:PRINT#2,A$(X):NEXT:PRINT#2,CR$:CLOSE 2:BX=&H3:EN$=CG$:GOSUB 29500:RETURN
2000 GOSUB 1405:IF LC=ME THEN A$="Too many active messages -- try tomorrow.":GOSUB 1405:GOTO 3650
2006 PAS$="":SC=0:IF NOT RE THEN T$=""
2007 IF SC THEN Z$=CG$:FT$="comment" ELSE Z$=MES$:FT$="message
2008 IF SC THEN GOSUB 52000:GOTO 2009 ELSE AD$="2000":IF NMR+5=>HMR THEN AD$="1"
2009 IF VAL(AD$)<2000 THEN A$="Not enough room for "+FT$+"!":GOSUB 1405:GOTO 3650
2010 LI=0:L=0:X=0:FOR I=1 TO 30:A$(I)="":NEXT:IF SC THEN 2100
2020 IF RE THEN 2050 ELSE A$="To (C/R For All)":GOSUB 1500:IF LEN(B$(1))>30 THEN A$="30 Char. Max.":GOSUB 1405:GOTO 2020
2030 IF Q=0 THEN T$="ALL" ELSE Z$=B$(1):GOSUB 5000:T$=Z$
2035 A$="Subject":GOSUB 1500:IF LEN(B$(1))>25 THEN A$="25 Char. Max.":GOSUB 1405:GOTO 2035
2045 IF Q=0 THEN 20095 ELSE Z$=B$(1):GOSUB 5000:SUB$=Z$
2075 IF T$="ALL" THEN A$="Cannot Protect this Message":GOSUB 1405:GOTO 2050
2084 PAS$=TU$:GOTO 2100
2085 A$=P$:GOSUB 1500:IF Q=0 THEN 2085 ELSE IF LEN(B$(1))>L THEN A$=STR$(L)+" Chars. max.":GOSUB 1405:GOTO 2085 ELSE IF L=15 AND MID$(B$(1),1,1)="!" THEN A$=P$+" can't begin with '!'":GOSUB 1405:GOTO 2085 ELSE RETURN
2088 A$="Callers must KNOW PASSWORD TO READ message. Is this what you want":GOSUB 1500: IF NO THEN 2070 ELSE L=14:A1$="!":GOTO 2092
2090 L=15:A1$="
2092 GOSUB 2085:Z$=B$(1):GOSUB 5000:PAS$=A1$+Z$
2100 GOSUB 1405:IF NOT XPR THEN A$="To enter "+FT$+", type in text.":GOSUB 1405:A$="<C/R> to end (19 lines max.).":GOSUB 1405
2120 GOSUB 3200
2125 LI=LI+1:A$=RIGHT$(STR$(LI),2)+": "+A$(LI):GOSUB 1403:GOSUB 3700:IF A$(LI)="" THEN LI=LI-1:GOTO 2300
2140 J=LI:GOSUB 2200:IF X THEN 2300 ELSE 2125
2200 X=0:IF J<17 OR SH THEN RETURN ELSE IF J=17 THEN A$="Two lines left." ELSE IF J=18 THEN A$="Last line" ELSE A$="Message full.":X=-1
2325 IF Q>1 AND Z$<>"M"THEN L=VAL(B$(Q)):GOSUB 3320
2330 ON INSTR("ACDEILMS?",Z$) GOTO 2400,2340,2500,2600,2800,3000,3100,3400,2345:GOTO 2300
2340 GOSUB 3200:GOTO 2140
2345 F$=HE$(4):GOSUB 1790:GOTO 2315
2400 GOSUB 1405:A$="Abort "+FT$:GOSUB 1500:IF NOT YES THEN 2300
2430 GOSUB 1405:A$="Aborted":GOSUB 1405:GOTO 3650
2500 GOSUB 1405:IF Q=1 THEN A$="Delete ":GOSUB 1403:GOSUB 3300
2520 A$="Line #"+STR$(L):GOSUB 1405:A$=A$(L):GOSUB 1400:A$="Delete this line":GOSUB 1500:IF NOT YES THEN A$="Line #"+STR$(L)+" NOT Deleted.":GOSUB 1405:GOTO 2300
2550 LI=LI-1:FOR X=L TO LI:A$(X)=A$(X+1):NEXT:A$(LI+1)="":A$="Line #"+STR$(L)+" Deleted.":GOSUB 1405:GOTO 2300
2600 GOSUB 1405:IF Q=1 THEN GOSUB 3300
2620 A$="Line #"+STR$(L)+" is:":GOSUB 1405:A$=A$(L):GOSUB 1400:A$="Enter <Oldstring;Newstring> or C/R for no change.":GOSUB 1405:B$(2)="":GOSUB 1500:IF Q=0 THEN 2300
2660 X=INSTR(1,A$(L),B$(1)):IF X=0 THEN 2710
2670 LB1=LEN(B$(1)):LB2=LEN(B$(2)):IF LB1=LB2 THEN MID$(A$(L),X)=B$(2):GOTO 2620
3340 A$="No such line, "+FE$+".":GOSUB 1405:RETURN 2300
3400 IF SC THEN 1850
3405 GOSUB 21990:GOSUB 23000:DF$=R$:A$="Message will be # "+STR$(LE+1):GOSUB 1405:A$="Updating Message file.":GOSUB 1403:REC=0:N$="":LE=LE+1:LC=LC+1:MT$=STR$(LE)+SPACE$(5-LEN(STR$(LE))):IF PAS$=TU$ THEN MID$(MT$,1,1)="*
3460 FI$=NAM$+SPACE$(31-LEN(NAM$)):T$=T$+SPACE$(31-LEN(T$)):MID$(T$,23,8)=TIME$:SUB$=SUB$+SPACE$(25-LEN(SUB$)):PAS$=PAS$+SPACE$(15-LEN(PAS$)):FOR J=1 TO LI:A$(J)=A$(J)+CHR$(227):REC=REC+LEN(A$(J)):NEXT
3510 IF REC MOD 128=0 THEN N$=STR$(REC\128+1) ELSE N$=STR$(REC\128+2)
3530 GET 1,NMR:M(LC,1)=NMR:M(LC,2)=LE:LSET R$=MT$+FI$+T$+D$+SUB$+PAS$+CHR$(225)+N$:PUT 1,NMR:NMR=NMR+VAL(N$):N$="":FOR J=1 TO LI:A$=".":GOSUB 1403:N$=N$+A$(J):IF LEN(N$)>127 THEN LSET R$=N$:PUT 1:N$=MID$(N$,129)
4416 IF INSTR("Mm",B$(L)) THEN MU=-1:GOTO 4370 ELSE IF MM=0 THEN 20095 ELSE GOSUB 1405
4430 IF RIGHT$(B$(L),1)="+"THEN FOW=-1 ELSE IF RIGHT$(B$(L),1)="-"THEN REV=-1:GOTO 4490
4450 FOR R=1 TO LC:IF RT AND M(R,2)=MM THEN 4520
4470 IF((RT AND FOW)OR QU OR SU)AND M(R,2)=>MM THEN 4520
4480 NEXT:GOTO 4515
4490 FOR R=LC TO 1 STEP-1:IF M(R,2)<=MM THEN 4540
4510 NEXT
4515 GOSUB 3965:GOTO 4370
4520 QQQ=R:IF RT AND NOT FOW THEN 4560
4530 QQ=R:QQQ=LC:QA=1:GOTO 4550
4540 QQ=R:QQQ=1:QA=-1
4550 FOR R=QQ TO QQQ STEP QA
4560 GET 1,M(R,1):PF=0:UH=0:Z$=MID$(R$,101,15):IF INSTR(R$,NAM$)>0 THEN UH=-1
4561 IF NOT SH THEN IF INSTR(R$,TU$)>0 AND NOT UH THEN PF=-1:IF FOW OR REV THEN 4635
4562 MM=VAL(MID$(R$,2,4)):IF MU AND NOT UH THEN 4625
4580 IF INSTR(R$,LG$(15))=0 THEN 4635
4581 IF MID$(R$,116,1)=CHR$(226) THEN 4625
4582 PG=0:IF MID$(Z$,1,1)="!" THEN IF NOT SH THEN PG=-1:KEE$=MID$(Z$,2)+" ":MR=0:GOSUB 665
4584 IF PF AND (QU OR (SU AND NOT PG)) THEN 4635
4585 IF PF THEN IF PG THEN SJ$="<PASSWORD>" ELSE SJ$="<PROTECTED>" ELSE SJ$=MID$(R$,76,25)
4590 IF QU THEN Z$=LEFT$(R$,5)+" "+SJ$:Z=31:GOSUB 8100:A$=Z$:GOSUB 1405:GOTO 4630
4600 GOSUB 8000:IF SU OR RET THEN 4630 ELSE IF M(R,2)>LO THEN LO=M(R,2)
4610 IF NOT PF THEN 4613 ELSE IF PG THEN MR=2:GOSUB 667
4611 IF PF THEN GOSUB 4670:GOSUB 1405:GOTO 4625
4613 GOSUB 9000:GOSUB 1405:IF Q AND PL<>0 THEN 62500
4625 IF NOT FOW AND NOT REV THEN 4370
4630 IF PL=0 THEN 4631 ELSE Q=Q+QAH:IF Q<PL THEN 4631 ELSE GOSUB 5600:IF NO THEN Q=0:GOTO 4650 ELSE Q=QAH
4631 GOSUB 42010:IF RET THEN 20095
4635 NEXT:IF RT THEN 4370
4650 GOSUB 1405:A$="End of Msgs.":GOTO 2220
4670 GOSUB 1405:A$="Sorry, "+FE$+", msg # "+LEFT$(R$,5)+" is protected.":GOTO 2210
4700 IF NOT AVA GOTO 4708
4705 GOSUB 1405:A$="Chat. Remote Conversation Utility.":GOSUB 1400:TIA=VAL(MID$(TIME$,1,2))*100+VAL(MID$(TIME$,4,2)):IF(TIA>AA AND TIA<AB)OR AC THEN 4710
4707 GOTO 4750
4708 A$=NA$+" is available between"+STR$(AA)+" and"+STR$(AB)+",":GOSUB 1405:A$="but is temporarily away, "+FE$:GOSUB 1405:GOTO 4755
4710 A$="Return is to main menu in":GOSUB 1405:A$="30 sec. if SYSOP unavailable.":GOSUB 1405:K=0:A$="Paging SYSOP now.":GOSUB 1403:IA!=FNTI!+30
4750 A$="Sorry "+FE$+", "+NA$+" is available between"+STR$(AA)+" and "+STR$(AB)+",":GOSUB 1405
4755 A$="Please leave a message or comment.":Z$=SPACE$(5)+"Operator paged at "+LEFT$(TIME$,5):GOSUB 5538:GOTO 2210
4765 GOSUB 1405:A$="SYSOP available! Go ahead.":GOSUB 1400
4770 CM=-1:GOSUB 49000
4775 WHILE EOF(3):A$=INKEY$:FK$=A$:GOSUB 60000:IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) OR A$=CHR$(127)THEN 4805 ELSE IF A$=ESC$THEN CM=0:CLS:GOTO 4820
4785 IF A$=CR$AND LF THEN PRINT#3,LF$;
4790 IF A$<>"" THEN 4800
4795 WEND
4797 A$=INPUT$(1,3):IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) THEN 4805 ELSE IF A$=CR$AND LF THEN PRINT#3,LF$;
4800 GOSUB 1403:GOTO 4775
4805 IF POS(0)>1 THEN PRINT BK1$;:PRINT#3,BK$;
4810 GOTO 4775
4820 IF AM$="U" THEN RETURN 1330 ELSE IF AM$="F" THEN RETURN 20020 ELSE GOTO 20095
4900 GOSUB 1405:A$="RBBS-PC Version "+VA$:GOSUB 1405:A$="You are caller # ->"+STR$(CJ):GOSUB 1405:A$="# of Active msgs ->"+STR$(LC):GOSUB 1405:IF LO>0 THEN A$="Last msg you read ->"+STR$(LO):GOSUB 1405
4950 A$="Next msg # will be->"+STR$(LE+1):GOTO 2210
5000 FOR Z=1 TO LEN(Z$):MID$(Z$,Z,1)=CHR$(ASC(MID$(Z$,Z,1))+32*(ASC(MID$(Z$,Z,1))>96)):NEXT:RETURN
5100 Z1$="":FOR Z=1 TO LEN(Z$):IF ASC(MID$(Z$,Z,1))<65 OR ASC(MID$(Z$,Z,1))>90 THEN 5105 ELSE Z1$=Z1$+MID$(Z$,Z,1)
5105 NEXT:Z$=Z1$:RETURN
5110 A$="Enter a new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE IF LEN(B$(1))>15 THEN 5110 ELSE Z$=B$(1):GOSUB 5000
5120 A$="Reenter new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE SWAP Z$,B$(1):GOSUB 5000:IF Z$<>B$(1)THEN A$=P$+"s don't match.":GOTO 2210
5125 IF MP AND NCH>MP AND NOT SH THEN A$="No changes permitted" ELSE Z=1:GOSUB 5140:IF NOT FG THEN 5130 ELSE A$="Temporary change":PW$=TPW$:TV!=TJA*60:UG=TFA:GOSUB 41070:GOSUB 41050:IF UG<SE THEN SH=0 ELSE SH=-1
5131 Z$=SPACE$(5)+"Password changed to "+B$(1):GOSUB 5538:RETURN
5140 FG=0:CLOSE 2:OPEN PD$ FOR INPUT AS 2:Z$=Z$+SPACE$(15-LEN(Z$))
5150 IF EOF(2) THEN 5160 ELSE INPUT #2,TPW$,TFA,TJA:IF LEN(TPW$)>15 THEN 5150 ELSE TPW$=TPW$+SPACE$(15-LEN(TPW$)):IF Z$<>TPW$ THEN 5150 ELSE IF Z THEN FG=-1 ELSE IF UG=TFA THEN FG=-1 ELSE 5150
5160 RETURN
5200 IF Q>1 THEN 5230
5220 A$="Page length is"+STR$(PL)+". Enter new length (0=continuous)":GOSUB 1500:IF Q=0 THEN 1200
5230 A=VAL(B$(Q)):IF A<0 OR A>255 THEN 5220 ELSE PL=A:GOTO 1200
5300 NAME CQ$ AS CQ$
5310 F$=CQ$:GOSUB 43025:A$="Conference Function <J,M,Q>":GOSUB 1500:IF Q=0 THEN 2210 ELSE Z$=B$(1):GOSUB 5000:FF=INSTR("JMQ",Z$):IF FF=0 THEN 5310 ELSE ON FF GOTO 5320,5350,2210:RETURN
5320 A$="Enter conference name":GOSUB 1500:IF Q=0 THEN 5310
5323 GRN$=B$(1):MES$=MID$(MES1$,1,2)+GRN$+"M.DEF":NAME MES$ AS MES$
5325 IF NAM$<>"SYSOP" THEN GOSUB 26000:GOSUB 9400:GET 2,UIX#:GOSUB 9600:PUT 2,UIX#:GOSUB 27000
5327 UF$=MID$(UF$,1,2)+GRN$+"U.DEF":NAME UF$ AS UF$
5330 IF NAM$="SYSOP" THEN DF=0:GOSUB 134:GOTO 2210 ELSE TEA$=NAM$:SUIX#=UIX#:GOSUB 30500:GOSUB 12600:GOSUB 25000:GOSUB 27000
5340 IF FG THEN UIX#=LOC(2):GOSUB 9500:GOSUB 134:GOTO 1395 ELSE A$="Sorry, you are not in that conference.":GOSUB 1405:UIX#=SUIX#:UF$=UF1$:MES$=MES1$:GOSUB 30500:GOSUB 23000:GRF=0:GOTO 2210
5350 IF NAM$="SYSOP" THEN MES$=MES1$:UF$=UF1$:GRF=0:GOSUB 135:GOTO 2210
5360 IF GRF THEN GOSUB 26000:GOSUB 9400:GET 2,UIX#:GOSUB 9600:PUT 2,UIX#:GOSUB 27000:MES$=MES1$:UF$=UF1$:GRF=0:GOSUB 9400:UIX#=MUIX#:GET 2,UIX#:GOSUB 9500:GOSUB 135:GOTO 2210 ELSE GOTO 2210
5500 IF BPS=-3 THEN A$="Sorry, 1200 baud connect cannot change speed.":GOTO 2210
5507 A$="Change to 450 baud":GOSUB 1500:IF NOT YES THEN RETURN
5510 A$="Change to 450 baud and press <C/R> until I respond.":GOSUB 1405:FOR I=1 TO 3:GOSUB 50510:NEXT:C=0:SWAP Q,NE:GOSUB 1654:SWAP Q,NE
5530 C=C+1:GOSUB 42000:IF C=20 THEN 10595 ELSE GOSUB 50500
5535 IF NOT EOF(3)THEN IF ASC(INPUT$(1,3))=13 THEN 5540
5537 GOTO 5530
5538 GOSUB 56000:LSET CL$=Z$:CDX=CDX+1:PUT 2,CDX:IF LH THEN LPRINT Z$
5539 RETURN
5540 Z$=" Change to 450 baud completed.":GOSUB 5538:A$=Z$:GOSUB 1405:BPS=-2:RETURN
5600 GOSUB 41000:IF NH THEN RETURN ELSE A$=LEFT$(LG$(0),13):GOSUB 1500:RETURN
6000 IF STI THEN GOSUB 1405:A$="* <Ctrl K> to abort. <Ctrl S> to suspend *":GOSUB 1400
6020 CLOSE 2:OPEN "I",2,F$:Q=0:GOTO 6040
6030 Q=-1
6040 IF EOF(2)OR(INP(MSR)<128 AND NOT LJ)THEN 6060
6045 IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN 6060 ELSE Q=0
6050 LINE INPUT #2,A$:A$=A$+NUL$:GOSUB 1405:IF NOT RET THEN 6040
6060 Q=0:CLOSE 2:IF NOT LJ THEN GOSUB 42000
6070 RETURN
6080 A$="Please tell the SYSOP file <"+F$+"> is missing!":GOTO 2210
7040 IF EOF(2)OR(INP(MSR)<128 AND NOT LJ)THEN 7200
7045 IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN 7200 ELSE Q=0
7050 LINE INPUT #2,A$:A$=A$+NUL$:IF LEN(A$)<2 THEN 7100
7057 IF INSTR(A$,"--") THEN 7100
7060 A=INSTR(9,MID$(A$,1,32),"/"):IF A>0 THEN 7070
7065 A=INSTR(9,MID$(A$,1,32),"-"):IF A=0 THEN 7100
7070 A=A-2:IF A>0 THEN PAD$=FNDC$(MID$(A$,A,8)) ELSE Q=Q-1:GOTO 7040
7075 IF MID$(PAD$,3,1)=" " THEN MID$(PAD$,3,1)="0
7085 IF MID$(PAD$,5,1)=" " THEN MID$(PAD$,5,1)="0
7089 IF PAD$=>LM$ AND NJ THEN NJ=0:CLOSE 2:OPEN "I",2,F$:Q=0:GOTO 7040
7090 IF PAD$=>LM$ THEN 7100 ELSE Q=Q-1:GOTO 7040
7100 IF NJ THEN 7040
7101 GOSUB 1405:IF NOT RET THEN 7040 ELSE 7200
7200 A$="":Q=0:CLOSE 2:IF NOT LJ THEN GOSUB 42000
7210 RETURN
8000 GOSUB 1405:IF RET THEN RETURN
8020 IF MID$(R$,37,3)="ALL" THEN T$="ALL":GOTO 8040
8030 Z=22:Z$=MID$(R$,37,Z):GOSUB 8100:T$=Z$
8040 Z=25:Z$=MID$(R$,76,Z):GOSUB 8100:SUB$=Z$:IF PF THEN SUB$=SJ$
8050 Z=31:Z$=MID$(R$,6,Z):GOSUB 8100:FI$=Z$:A$="Msg # "+LEFT$(R$,5)+" Dated "+MID$(R$,68,8)+" "+MID$(R$,59,8):GOSUB 1405:IF NOT RET THEN A$="From: "+FI$
8070 GOSUB 1405:IF NOT RET THEN A$=" To: "+T$:GOSUB 1405:A$=" Re: "+SUB$:GOSUB 1405
8080 RETURN
8100 Z=LEN(Z$):FOR I=1 TO LEN(Z$):IF MID$(Z$,Z,1)<>" " THEN 8110
8105 Z=Z-1:NEXT
8110 Z$=MID$(Z$,1,Z):RETURN
9000 GOSUB 1405:Q=4:FOR X=2 TO VAL(MID$(R$,118)):GOSUB 1403:EOL=0:J=1:GET 1
9050 B=INSTR(J,R$,CHR$(227)):IF RET THEN RETURN
9060 C=B-J:IF C<0 THEN C=128:EOL=-1
9070 A$=MID$(R$,J,C):IF EOL THEN 9090
9075 GOSUB 1405:J=B+1:IF PL THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:Q=0:IF NO THEN RETURN
9085 GOTO 9050
9090 NEXT:A$="":RETURN
9100 GOSUB 1405:H=VAL(LEFT$(TI$,2)):M=VAL(MID$(TI$,4,2)):S=VAL(MID$(TI$,7,2)):HH=VAL(LEFT$(TIME$,2)):MM=VAL(MID$(TIME$,4,2)):SS=VAL(MID$(TIME$,7,2)):IF S=<SS THEN SSS=SS-S ELSE SSS=60-(S-SS):M=M+1
9150 IF M=<MM THEN MMM=MM-M ELSE MMM=60-(M-MM):H=H+1
9160 IF H=<HH THEN HHH=HH-H ELSE HHH=24-(H-HH)
9170 GOSUB 41510:A$="It is now "+TIM$+".":GOSUB 1405:A$="You have been on for":GOSUB 1403:IF HHH>0 THEN A$=STR$(HHH)+" Hours":GOSUB 1403
9200 A$=STR$(MMM)+" Min. and"+STR$(SSS)+" Sec.":GOTO 2210
9300 NK=NOT NK:A$="<Nulls> ":IF NK THEN NUL$=CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0):A$=A$+"on" ELSE NUL$="":A$=A$+"off"
9320 GOTO 2210
9400 CLOSE 2:OPEN "R",2,UF$,128:FIELD 2,31 AS N$,15 AS PW$,2 AS SL$,14 AS OP$,24 AS CS$,19 AS MA$,14 AS TD$,3 AS LND$,2 AS UDL$,2 AS UUL$,2 AS ET$:RETURN
9800 IF GRF THEN 9820 ELSE GOSUB 1405:GOSUB 30500:FOR X=2 TO MNODES+1:GET 1,X:A$=MID$(R$,1,31)+"Node"+STR$(X-1):IF MID$(R$,57,1)="A" THEN A$=A$+" Active" ELSE A$=A$+" Inactive
9810 GOSUB 1405:NEXT:RETURN
9820 A$="Node display not available while Conference active!":GOSUB 1400:RETURN
10070 F$=CG$:GOSUB 6000:RETURN
10090 A$=CR$+"List - <U>sers, <R>ecent callers, C/R to return":GOSUB 1500:IF Q=0 THEN RETURN ELSE Z$=B$(1):GOSUB 5000:ON INSTR("UR",Z$)+1 GOTO 10090,10096,10100
10096 GOSUB 12700:GOSUB 9400:STI=-1:Q=0:FOR I=1 TO NUR-1:GET 2,I:A$=LEFT$(N$,20)+CS$+MA$+TD$:GOSUB 1405:IF RET THEN RETURN
10098 IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN RETURN ELSE Q=0
10099 NEXT:STI=0:RETURN
10100 F$=CF$:GOSUB 57000:RETURN
10390 A$="Msg # to Recover":GOSUB 1500:MM=VAL(B$(1)):IF MM<1 THEN 1450
10410 R=FMR:GOSUB 1405:GOSUB 30500
10420 GET 1,R:RR=VAL(MID$(R$,118)):IF R=>NMR THEN A$="No Msg #"+STR$(MM):GOTO 2210
10440 IF VAL(MID$(R$,2,4))<>MM THEN R=R+RR:GOTO 10420
10450 IF INSTR(R$,CHR$(226))<>0 THEN GOSUB 22000:LSET R$=LEFT$(R$,115)+CHR$(225)+MID$(R$,117):PUT 1,LOC(1):GOSUB 25000:A$="Msg #"+STR$(MM)+" is restored.":GOSUB 1405:GOTO 10490
10480 A$="Msg #"+STR$(MM)+" is not Dead.":GOTO 2210
10620 Z$=SPACE$(5)+LG$(I):GOSUB 5538:Z$=NAM$+" on at "+D$+", "+TIM$+"***** LOGON DENIED *****, "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$)):IF LH THEN LPRINT Z$
10698 GOSUB 1405:A$="You are denied access.":GOSUB 1400:GOTO 13540
10720 CLS:FILES B$(J):LP=CSRLIN:IF CE THEN W=13:P=1 ELSE W=18:P=2
10725 LOCATE P,1,1:FOR I=P TO LP:FOR B=1 TO 66 STEP W:G=G+1:B$(G)="":FOR JJ=0 TO 11:H=SCREEN(I,(B+JJ)):B$(G)=B$(G)+CHR$(H):NEXT:IF INSTR(B$(G),".")>0 THEN 10840
10733 IF LN AND LG$(13)="YES" AND B$(G) = DIR$+SPACE$(12-LEN(DIR$)) THEN G=G-1:GOTO 10840
10737 IF LN AND LG$(14)="YES" AND B$(G) = UB$+SPACE$(12-LEN(UB$)) THEN G=G-1:GOTO 10840
10740 IF LEFT$(B$(G),1)=" " THEN G=G-1:RETURN
10840 NEXT:NEXT:RETURN
10925 MS=-1:GOSUB 3100:MS=0:RETURN
10930 IF DA<2 THEN A$="Unsupported by current level of DOS.":GOTO 1200
10932 IF LJ THEN A$="Only for remote SYSOP's":GOTO 1200
10934 CLOSE 2:OPEN "O",2,CH$:PRINT#2,"ECHO OFF":PRINT#2,"CTTY "+CP$:PRINT#2,"ECHO RBBS-PC "+VA$:PRINT#2,"ECHO SYSOP in Remote Console Mode at "+TIME$+" on "+DATE$:PRINT#2,"COMMAND ":PRINT#2,"CTTY CON":PRINT#2,RC$:GOSUB 56000
10950 GOSUB 41500:LSET CL$=SPACE$(5)+"Exited to DOS 2.0 at "+TIM$:IF LH THEN LPRINT CL$
10960 GOTO 10992
10970 IF NOT WA THEN A$="All RBBS-PC doors are closed.":GOTO 2220
10973 F$=ME$(5):GOSUB 43025:IF UG<UDR THEN A$="Your access level will not allow you to open a door.":GOSUB 1405:GOTO 2210
10974 A$="Which door would you like opened? (C/R to end)":GOSUB 1500:Z$=B$(1):GOSUB 5000:IF B$(1)=""THEN RETURN
10976 CLOSE 2:OPEN "I",2,F$
10978 IF EOF(2)THEN A$="There is no "+Z$+" door!.":GOSUB 1405:GOTO 1200 ELSE GOSUB 42010
10982 LINE INPUT#2,A$:IF LEN(A$)<LEN(Z$)GOTO 10978
10984 IF INSTR(A$,Z$)THEN 10985 ELSE 10978
10985 Z$=Z$+".BAT
10986 NAME Z$ AS Z$
10987 CLOSE 2:OPEN "O",2,CH$:PRINT#2,Z$:PRINT#2,RC$:CLOSE 2:A$="RBBS-PC "+Z$+" window opened at "+TIME$+" on "+DATE$:GOSUB 1405:WI=-1:GOSUB 56000:LSET CL$=SPACE$(5)+LEFT$(Z$,LEN(Z$)-4)+" window opened!":IF LH THEN LPRINT CL$
10992 CLOSE 3:OUT MCR,INP(MCR)OR 1:IF WI THEN IF MC THEN DEF SEG=MC:GOSUB 60400:POKE(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC),ASC(RIGHT$(CP$,1))-48:AX=&H700+MTERM:GOSUB 60510:GOSUB 60430
10996 CDX=CDX+1:PUT 2,CDX:GOSUB 43050:SYSTEM
11000 A$="A)dd, L)ist, P)rint, or M)odify users (C/R to quit)":GOSUB 1500:IF Q=0 THEN 20095 ELSE QQ=0:Z$=LEFT$(B$(1),1):GOSUB 5000:IF Z$="A" THEN 12300 ELSE IF Z$="M"THEN STI=0 ELSE IF Z$="P"THEN QQ=-1
11005 GOSUB 9400:Z=1
11010 FOR J=Z TO NUR-1:GET 2,J
11015 IF ASC(N$)=0 THEN 11300 ELSE OF=CVI(SL$):A$=STR$(LOC(2))+":"+N$+" SECURITY "+STR$(OF)+" ":IF OF<MO THEN A$=A$+" <Locked out>":GOTO 11100
11020 A$=A$+"Pw="+PW$+" Times on="+STR$(CVI(MID$(OP$,1,2)))
11025 IF QQ THEN LPRINT A$
11027 GOSUB 1405:RH=RET:IF OF>=SE THEN A$=" (SYSOP) " ELSE A$=SPACE$(12)
11030 A$=A$+TD$+" "+CS$+MA$
11100 IF QQ THEN LPRINT A$
11101 GOSUB 1405:RH=RET:A$=" DOWNLOADS="+STR$(CVI(UDL$)):A$=A$+SPACE$(30-LEN(A$))+"UPLOADS="+STR$(CVI(UUL$)):A$=A$+SPACE$(60-LEN(A$))+"TIME USED="+STR$(CVI(ET$))+" Min.":IF QQ THEN LPRINT A$
12950 A$="Type of system (C/R if IBMPC)"+A1$:GOSUB 1500:IF Q=0 THEN LSET MA$="IBMPC" ELSE LSET MA$=B$(1)
12960 A$="CITY and STATE"+A1$:GOSUB 1500:IF Q=0 THEN 12960 ELSE Z$=B$(1):GOSUB 5000:RETURN
13000 IF ERR=7 THEN 13650
13010 IF ERL=175 AND ERR=63 THEN RESUME 187
13020 IF ERL=187 AND (ERR=24 OR ERR=25 OR ERR=27 OR ERR=68) THEN LH=0:RESUME 187
13025 IF ERL=677 AND ERR=5 THEN RESUME 670
13030 IF ERL=841 THEN LH=0:RESUME 841
13033 IF ERL=825 AND ERR=5 THEN RESUME 830
13035 IF ERL=954 AND ERR=5 THEN JJ=JJ-LEN(FH$):FH$="":RESUME 954
13037 IF ERL=4370 AND ERR=6 THEN RESUME 1200
13040 IF ERL=4744 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=0:RESUME 4744
13045 IF ERL=5130 AND ERR=63 THEN RESUME 5160
13047 IF ERL=5150 AND ERR=62 THEN RESUME 5160
13050 IF ERL=5538 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=0:RESUME 42020
13060 IF ERL=11025 THEN QQ=0:RESUME 11025
13070 IF ERL=11100 THEN QQ=0:RESUME 11100
13080 IF ERL=13110 THEN LH=0:RESUME 13110
13085 IF ERL=20231 THEN LH=0:RESUME 20233
13087 IF ERL=20242 AND ERR=62 THEN RESUME 20247
13090 IF ERR=58 THEN 13130
13100 IF(ERR=EC AND(FNTI!-TKA!<5))THEN EA=EA+1:IF EA>10 THEN 50000
13110 IF (ERR<>53 AND ERR<>57 AND ERR<>61 AND ERR<>64 AND ERR<>69) THEN A$="+++ Error "+STR$(ERR)+" line "+STR$(ERL)+" at "+TIME$+" on "+DATE$:GOSUB 13670
13115 IF(ERR<>53 AND ERR<>57 AND ERR<> 61 AND ERR<> 64 AND ERR<> 69 AND LH)THEN LPRINT "+++ Error ";ERR;" in line ";ERL" occurred at "TIME$+" on "+DATE$
13120 EC=ERR:IF FNTI!-TKA!>5 THEN EA=0 ELSE TKA!=FNTI!
13130 IF ERL=117 AND ERR=53 THEN DF$=CA$:GOTO 13600
13135 IF ERL=121 AND ERR=62 THEN DF$=CA$:GOTO 13600
13140 IF ERL=220 THEN RESUME 220
13150 IF(ERL=340 AND NOT BE)THEN OUT LCR,&H3:RESUME 335
13160 IF ERL=340 THEN RESUME 345
13170 IF ERL<1200 THEN RESUME 10595
13180 IF ERL=1420 AND ERR=57 THEN R1=INP(LSR):RESUME 1425
13190 IF ERL=1540 OR ERL=3736 OR ERL=20840 OR ERL=21280 OR ERL=21360 OR ERL=21420 THEN GOSUB 50500:IF INP(MSR)<128 THEN RESUME 10595
13200 IF ERL=1540 THEN RESUME 1540
13220 IF ERL=3736 THEN RESUME 3736
13230 IF ERL=4797 THEN GOSUB 50500:GOSUB 13670:IF INP(MSR)<128 THEN RESUME 10595 ELSE RESUME 4797
13235 IF ERL=5140 AND ERR=53 THEN Z$=SPACE$(5)+"FILE <"+PD$+"> missing!":GOSUB 5538:IF Z=1 THEN Z$=B$(1):GOSUB 5000:RESUME 5160 ELSE RESUME 5160
13237 IF ERL=5300 THEN IF ERR=53 THEN RESUME 2210 ELSE RESUME 5310
13238 IF ERL=5323 THEN IF ERR=53 OR ERR=64 THEN MES$=MES1$:RESUME 5310 ELSE RESUME 5325
13239 IF ERL=5327 THEN IF ERR=53 OR ERR=64 THEN MES$=MES1$:UF$=UF1$:RESUME 5310 ELSE RESUME 5330
13240 IF ERL=5535 AND ERR=57 THEN R1=INP(LSR):RESUME 20015
13250 IF ERL=5535 THEN RESUME 5530
13260 IF ERL=6020 THEN RESUME 6080
13270 IF ERL=6050 AND ERR=52 THEN RESUME 6060
13280 IF ERL=10600 AND ERR=63 THEN 10595
13310 IF ERL=10720 THEN IF ERR=53 OR ERR=64 THEN RESUME 1630
13312 IF ERL=10986 AND ERR=58 THEN RESUME 10987
13314 IF ERL=10986 THEN A$="Tell the SYSOP that the "+Z$+" door is closed.":GOSUB 1405:RESUME 1200
13340 IF ERL=12570 AND ERR=53 THEN RESUME 710
13355 IF ERL=20165 AND ERR=58 THEN RESUME 20167
13357 IF ERL=20165 THEN RESUME 20170
13360 IF ERL=20220 AND ERR=53 THEN RESUME 20225
13370 IF ERL=20220 AND ERR=58 THEN OK=-1:RESUME 20225
13372 IF ERL=20220 AND ERR=64 THEN A$="Invalid file name":GOSUB 1405:RESUME 20200
13375 IF ERL=20240 AND ERR=53 THEN Z$=SPACE$(5)+"FILE <"+FB$+"> missing!":GOSUB 5538:RESUME 20247
13380 IF ERL=20440 AND ERR=53 THEN OK=-1:RESUME 20450
13385 IF ERL=20440 THEN IF ERR=64 OR ERR=69 THEN RESUME 20420 ELSE RESUME 20450
13390 IF ERL=20450 THEN OK=0:RESUME 20455
13400 IF ERL=20620 THEN OK=0:RESUME 20621
13405 IF ERL=20735 AND ERR=53 THEN RESUME 42020
13410 IF ERL=20840 THEN RESUME 20840
13420 IF ERL=21130 THEN OK=0:RESUME 21131
13430 IF ERL=21280 THEN RESUME 21280
13440 IF ERL=21360 THEN RESUME 21360
13442 IF ERL=21420 THEN RESUME 21420
13443 IF ERL=43030 AND ERR=58 THEN OK=-1:RESUME 43031
13445 IF ERL=43030 AND ERR=53 THEN RESUME 43031
13446 IF ERL=52000 AND ERR=53 THEN IF Z$=CG$ THEN CLOSE 2:OPEN "O",2,CG$:CLOSE 2:RESUME 52000
13447 IF ERL=52000 AND ERR=53 THEN A$="Upload directory file is missing! Please inform sysop.":GOSUB 1405:RESUME 1200
13450 IF 65535=ERL THEN 50000
13460 IF ERR=5 THEN 10595
13470 IF ERR=57 OR ERR=24 OR ERR=25 THEN GOSUB 50500:R1=INP(MSR):IF R1<128 THEN RESUME 10595
13480 IF ERR=61 THEN GOSUB 1405:A$="<< Disk is full -- operation terminated. >>":GOSUB 1400:RESUME 1200
13490 IF ERR=71 THEN GOSUB 13630:RESUME 20020
13500 A$="Software bug found.":GOSUB 1405:A$="Tell the SYSOP that":GOSUB 1405:A$="Error "+STR$(ERR)+" occured in Line "+STR$(ERL)+".":GOSUB 1405:PRINT:RESUME 1200
13540 IF LJ THEN 13549
13543 IF NOT SH THEN IF CINT(UIX#)<1 OR NF=-1 THEN 13549
13545 GOSUB 56000:GOSUB 43050
13549 GOSUB 13700:GOSUB 13550:GOSUB 21990:GET 1,NODE:MID$(R$,57,1)="I":PUT 1,NODE:GOSUB 25000:CLOSE:OUT MCR,&H4:GOSUB 50510:OUT MCR,&H0:IF CYC THEN GOTO 31000 ELSE RUN
13550 IF LJ THEN RETURN
13560 GOSUB 50510:OUT MCR,INP(MCR) AND 254:GOSUB 50500:OUT MCR,INP(MCR) OR 1:RETURN
13600 CLS:LOCATE,,0:PRINT DF$+" file not found/invalid. Create one with "+VA$+"'s utility program -- CONFIG.":GOSUB 50510:GOTO 31000
13630 A$="The SYSOP left the drive door open.":GOSUB 1405:A$="File Menu not available.":GOSUB 1405:RETURN
13650 CLS:LOCATE,,0:PRINT"Not enough memory for RBBS-PC":GOSUB 50510:GOTO 31000
13670 CLOSE 2:OPEN "R",2,CF$,64:FIELD 2,64 AS CL$:A$=STRING$(5," ")+A$:LSET CL$=A$:CDX=CDX+1:PUT 2,CDX:A$="":RETURN
20240 CLOSE 2:OPEN FB$ FOR INPUT AS 2:N$=Z$:GOSUB 20282:LG$(9)=DR$:T7$=PRE$:T8$=EXT$
20242 IF EOF(2) THEN 20247 ELSE INPUT #2,N$,DF,DF$:GOSUB 20282
20243 IF DR$<>"" AND DR$<>LG$(9) THEN 20242 ELSE A$=T7$:Z$=PRE$:GOSUB 20285:IF OK THEN 20242 ELSE A$=T8$:Z$=EXT$:GOSUB 20285:IF OK THEN 20242
20244 IF UG<DF THEN 20245 ELSE IF DF$="" THEN 20247 ELSE Z$=DF$:GOSUB 5000:DF$=Z$:IF DF$=PW$ THEN 20247 ELSE A$="Enter PASSWORD for downloading "+F$:GOSUB 1500:Z$=B$(1):GOSUB 5000:IF Z$=DF$ THEN 20247
20245 VD$="DownLoad "+F$:GOSUB 1380:RETURN 20015
20247 DF=0:EXT$=RIGHT$(F$,4):IF INSTR(".EXE.COM.OBJ.WKS.LBR.WRK",EXT$) OR MID$(EXT$,3,1)="Q" OR (BD AND EXT$=".BAS") THEN A$="This is a binary file and requires XMODEM transfer":GOSUB 1405:DF=-1
20248 IF Q>2 THEN Z$=B$(3):Q=2:GOTO 20260
20252 A$="Download"+FU$:GOSUB 1500:IF Q=0 THEN 20252 ELSE Z$=B$(1)
20282 Z$=N$:GOSUB 5000:IF MID$(Z$,2,1)=":" THEN DR$=LEFT$(Z$,1):S=3 ELSE DR$="":S=1
20283 P=INSTR(Z$+".","."):PRE$=MID$(Z$,S,P-S):EXT$=MID$(Z$,P+1):IF LEN(EXT$)>3 THEN EXT$=LEFT$(EXT$,3)
20284 RETURN
20285 OK=0:K=0:L=LEN(A$)
20286 K=K+1:IF K>L THEN 20288 ELSE B$=MID$(Z$,K,1):IF B$="*" THEN 20289
20287 IF B$<>"?" AND MID$(A$,K,1)<>B$ THEN OK=-1:GOTO 20289 ELSE 20286
20288 IF L<LEN(Z$) AND MID$(Z$,L+1,1)<>"*" THEN OK=-1
20289 RETURN
20290 CLOSE 2:OPEN "R",2,F$,128:TLA=165:GOSUB 20750:IF NOT BE THEN GOSUB 1405:A$="Switching to N,8,1 for binary transfer. You do the same.":GOSUB 1405:GOSUB 50510
20340 IF DF THEN 20235 ELSE CLOSE 2:OPEN "I",2,F$:TLA=139:GOSUB 20750:A$="* <Ctrl K> to abort. <Ctrl S> to suspend *":MID$(A$,9,1)="X":GOSUB 1400:A$="Ready to send. Open download file. Press <C/R> to start":GOSUB 1500
20380 ABT$=CAN$:STI=-1:GOSUB 6030:ABT$=CHR$(11):IF RET THEN A$="<*>Download aborted<*>":SN=0:GOTO 20390
20381 A$=CHR$(26):GOSUB 1400:IF NOT LJ THEN FOR X=1 TO 5:PRINT#3,CHR$(7):GOSUB 50510:NEXT
20385 A$="<*>End of file<*>":SN=-1
20390 GOSUB 1400:GOSUB 50600:RETURN
20400 IF Q>1 THEN B$(1)=B$(2):GOTO 20430
20420 A$=F8$+"upload":GOSUB 1500:IF Q=0 THEN RETURN
20430 Z$=B$(1):VD$="Upload ":FOR X=1 TO LEN(FA$):GOSUB 20741:ON A GOTO 20440,20420
20440 OK=0:NAME F$ AS F$
20450 IF NOT OK THEN 20460
20455 NEXT
20460 IF NOT OK AND UG>=UPS THEN A$="File exists, overwrite it":GOSUB 1500:IF YES THEN OK=-1:KILL F$:GOTO 20475
20465 F$=RIGHT$(FA$,1)+":"+Z$:IF NOT OK THEN CLOSE 2:A$="File <"+Z$+"> exists! Use a unique name.":GOSUB 1400:GOTO 20420
20475 Z$=LEFT$(F$,2)+UB$:GOSUB 1400:GOSUB 52000:A$="Upload disk has"+AD$:GOSUB 1400:FH$="(U) "+F$:GOSUB 950:IF Q>2 THEN Z$=B$(3):GOTO 20500
20480 A$="Upload"+FU$:GOSUB 1500:IF Q=0 THEN 20480 ELSE Z$=B$(1)
20530 IF NOT BE THEN GOSUB 1405:A$="Switching to N,8,1 for binary transfer. You do the same, then start XMODEM.":GOSUB 1400
20540 A$="Receive ready. Press <Ctrl X> to abort transfer.":GOSUB 1405:GOSUB 50500:OK=-1:GOSUB 20860:X#=0:IF OK THEN 20700 ELSE 20730
20560 A$="NOTE--transfer MUST Terminate with a <Ctrl-K>.":GOSUB 1400:A$="Ready to receive.":GOSUB 1405:OK=0:X=0:CLOSE 2:OPEN "O",2,F$:IF PRT THEN PRINT"<Esc> from SYSOP will abort.
20600 WHILE NOT EOF(3):GOSUB 42000:IF LOF(3)<128 THEN PRINT#3,XA$;:X=-1
20710 A$="Enter 40 char. description of "+F$+"(begin with / if for SYSOP only).":GOSUB 1405:A$=" |----+---1+0---+---2+0---+---3+0---+---4+0":GOSUB 1405:GOSUB 1500:IF LEN(B$(1))>40 THEN 20710
20720 IF LEFT$(B$(1),1)="/"THEN 20725 ELSE PRINT#2,USING"\ \######## & &";F$;X#;LEFT$(DATE$,6)+RIGHT$(DATE$,2);B$(1)
20725 CLOSE 2:Y$=" >> uploaded << ":ULD=ULD+1:GOSUB 50610:RETURN
20730 A$="Upload aborted.":GOSUB 1405
20735 CLOSE 2:KILL F$:RETURN
20741 A=1:GOSUB 5000:F$=MID$(FA$,X,1)+":"+Z$:IF INSTR(F$,"?") OR INSTR(F$,"*") OR INSTR(F$," ") OR INSTR(F$,".DEF") OR INSTR(F$,".OLD") OR INSTR(3,F$,":") OR MID$(F$,LEN(F$),1)="." THEN A=2:RETURN
20742 IF LEN(Z$)=>3 THEN IF INSTR("COM1:COM2:LPT1:LPT2:LPT3:PRN:CON:AUX",Z$) THEN NI=VB:VD$=VD$+Z$:GOSUB 1380
22200 CC$=CHR$(10)+CHR$(0)+CHR$(11)+CHR$(1)+MID$(MES$+SPACE$(8),3,8):GOSUB 28000:IF CRTN=0 THEN RETURN ELSE GOSUB 50500:GOTO 22200
22300 GOSUB 28100:CALL LPLKIT(DF,DF$,A):RETURN
23000 GET 1,1:LE=VAL(LEFT$(R$,8)):CJ=VAL(MID$(R$,11,10)):NUR=VAL(MID$(R$,57,5)):HUR=VAL(MID$(R$,62,5)):FMR=VAL(MID$(R$,68,7)):NMR=VAL(MID$(R$,75,7)):HMR=VAL(MID$(R$,82,7)):MNODES=VAL(MID$(R$,127)):RETURN
33150 A$=CHR$(12)+"SYSOP is active. Now in CHAT mode.":GOSUB 1405:GOSUB 50500:A$="Hello, this is "+NA$+" "+NB$+". Sorry to break in but..":GOSUB 1400:GOSUB 4770:RETURN
40000 A$="Status cannot be changed while Conference active!":GOSUB 1400:RETURN
41000 GOSUB 41010:IF TR!<0 THEN TR!=0:RETURN 10553 ELSE RETURN
41510 TIM$=TIME$:IF VAL(LEFT$(TIM$,2))=12 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN
41520 IF VAL(LEFT$(TIM$,2))>11 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))-12),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN ELSE TIM$=LEFT$(TIM$,5)+" AM":RETURN
42000 IF LJ THEN RETURN:IF CTI!>TI!THEN CTI!=TI!+(10*60)
42010 IF INP(MSR)<128 AND NOT LJ THEN 10595
42020 RETURN
43000 IF NOT BE THEN A$="Graphics unavailable in 7 bit mode":GOTO 43020
43010 GR=NOT GR:A$="Graphics mode ":IF GR THEN A$=A$+"on" ELSE A$=A$+"off
43020 GOTO 2210
43025 GOSUB 43030:GOSUB 45000:RETURN
43030 OK=0:IF (BE AND GR AND LEN(F$)<10) THEN DF$=F$+"G":NAME DF$ AS DF$
43031 IF OK THEN F$=DF$
43035 RETURN
43040 IF INSTR(3,Z$,MID$(A$,3,(LEN(A$)-2))) THEN RETURN 20245 ELSE RETURN
43050 FIELD 2,55 AS CL$,3 AS LG$(10),3 AS MMM$, 3 AS LG$(16):LSET CL$=MID$(NG$,65,55):LSET LG$(10)=STR$(HHH):LSET MMM$=STR$(MMM):LSET LG$(16)=STR$(SSS):CDX=CDX+1:PUT 2,CDX:FIELD 2,64 AS CL$:LSET CL$=LEFT$(NG$,64):CDX=CDX+1:PUT 2,CDX
43060 LSET CL$=STRING$(64,CHR$(0)):PUT 2:PUT 2:IF FE$=NA$ AND LK$=NB$ THEN SH=-1 ELSE SH=0
64000 LG$(1)="Registration Check Failed":LG$(3)="Locked out attempt":LG$(4)="Password Attempt Failed":P$="Password":VB$="RBBS-PC VERSION ":K1$="<K>ill unneeded ones.":LG$(5)="Automatic Lockout completed":LG$(6)="Name in use on another Node!":LF=-1
64010 TT$="Transfer aborted by <Esc>":TU$="^READ^":E1$=" Error in #":F8$="Enter full filename to ":FU$=" type <X>modem, <A>scii, <Q>uit":LG$(0)="More (Y),N,NS,RE":LG$(2)="Sysop name attempted":RETURN